/* 
 * Autores:
 *      Jonathan Lopez  11106
 *      Jorge Martínez  11237
 * 
 * Ultima revision: $Rev: 28 $
 *      Fecha: $Date: 2011-11-13 08:23:56 +0000 (Sun, 13 Nov 2011) $
 * 
 * Archivo: Prueba_CSVConsola.java
 */

package Pruebas;
import Servicios.*;
import Datos.CSV.*;
import java.io.IOException;
import java.util.Arrays;

/**
 * Realiza las pruebas con las interfaces que utilizan archivos CSV desde la
 * consola.
 * 
 * @author Jorge
 * @author Jonathan
 */
public class Prueba_CSVConsola {
    /**
     * Punto de entrada de las pruebas unitarias para archivos CSV desde la
     * consola.
     * @param args 
     */
    public static void main( String[] args ){
        // Mensaje bienvenida
        System.out.println("Bienvenido a ced-mp");
        System.out.println("La Caja Encriptada de Datos - Multiplataforma");
        Servicios serviciosCSV = null;
        
        try {
            // Clase de servicios
            serviciosCSV = new Servicios( null,
                    new ProveedorDatosCSV( "DatosCSV/usuarios.csv", "DatosCSV/datos.csv" ) );
        } catch (IOException ex) {
            System.out.println(ex.getCause());
            return;
        }
        
        
        // Crear los usuarios
        System.out.println("Creando nuevo usuario: Rono - (pass = abcd)");
        Usuario nuevoUsuario = new Usuario("Rono", "abcd", "Riuno", "Olmeca");
        System.out.println(serviciosCSV.agregarUsuario(nuevoUsuario) ?
                "\tUsuario agregado" : "\tUsuario ya existe");
        System.out.println("Creando nuevo usuario: Andos - (pass = 1234)");
        Usuario nuevoUsuario2 = new Usuario("Andos", "1234", "Amigo", "Tolteca");
        System.out.println(serviciosCSV.agregarUsuario(nuevoUsuario2) ? 
                "\tUsuario agregado" : "\tUsuario ya existe" );
        
        /* Cambiar usuario */
        System.out.println("Utilizando usuario: " + nuevoUsuario.obtenerUsuario() );
        System.out.println( serviciosCSV.cambiarUsuario(nuevoUsuario) );
        
        // Agregar Categorias
        String categoriaUtilizar = "Dispositivos Electronicos";
        System.out.println("Agregar categoria: " + categoriaUtilizar );
        System.out.println( serviciosCSV.agregarCategoria( categoriaUtilizar ));
        System.out.println("Agregar categoria: Cuentas" );
        System.out.println( serviciosCSV.agregarCategoria("Cuentas") );
        
        // Agregar Servicios
        String nombreServicio = "iPad";
        System.out.println("Agregar servicio " + nombreServicio +
                " a categoria - " + categoriaUtilizar);
        System.out.println(serviciosCSV.agregarServicio(categoriaUtilizar, nombreServicio));
        System.out.println("Agregar servicio " + "BlackBerry" +
                " a categoria - " + categoriaUtilizar);
        System.out.println(serviciosCSV.agregarServicio(categoriaUtilizar, "BlackBerry"));
        
        
        // Utilizar servicios
        /* Enlazar */
        System.out.println("Enlazando " + nombreServicio);
        iEnlace enlace = serviciosCSV.enlazar(categoriaUtilizar, nombreServicio);
        System.out.println(enlace);
        
        /* Agregar campos al servicio */
        //* BORRAR el primer / para comentar todo el bloque
        enlace.agregarCampo("Usuario", -1);
        enlace.cambiarCampo("Usuario", "Rono");
        enlace.agregarCampo("Pass", -1);
        enlace.cambiarCampo("Pass", "abcd");
        enlace.agregarCampo("Marca", -1);
        enlace.cambiarCampo("Marca", "Apple");
        enlace.agregarCampo("Comprado en", -1);
        enlace.cambiarCampo("Comprado en", "Sonido Seguro");
        //*/
        
        System.out.println("Campos del servicio: " + nombreServicio);
        for (String campo : enlace.obtenerNombreCampos()) {
            System.out.println("\t" + campo + " - " + enlace.obtenerCampo(campo));
        }
        
        System.out.println("Guardar cambios");
        System.out.println(enlace.realizarCambios());
        
        /* Listar Categorias */
        System.out.println("Categorias: ");
        String[] categorias = serviciosCSV.obtenerNombreCategorias();
        System.out.println(Arrays.toString(categorias));
        
        /* Listar Servicios por Categoria */
        System.out.println("Servicios: ");
        for (String cat : categorias) {
            System.out.println("\t" + cat );
            String[] servicios = serviciosCSV.obtenerNombreServicios(cat);
            System.out.println("\t\t" + Arrays.toString(servicios));
        }
        
        
    }
}
